package com.hh.storeAttribute.service.impl;/*
 * @Description:TODO 描述
 * @Author: tongZhao
 * @date: 2023/8/16
 */

import com.hh.storeAttribute.Vo.StoreAttributeAddVo;
import com.hh.storeAttribute.Vo.StoreAttributeUpdateStatusVo;
import com.hh.storeAttribute.Vo.StoreAttributeUpdateVo;
import com.hh.storeAttribute.Vo.StoreAttributeVo;
import com.hh.storeAttribute.bean.StoreAttribute;
import com.hh.storeAttribute.mapper.StoreAttributeMapper;
import com.hh.storeAttribute.service.StoreAttributeService;
import com.hh.storeRoom.vo.StoreRoomUpdateStatusVo;
import com.hh.utils.PageVo;
import com.hh.utils.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StoreAttributeServiceImpl implements StoreAttributeService {

    @Autowired
    private StoreAttributeMapper storeAttributeMapper;

    @Override
    //查询页面
    public ResultVo queryPage(StoreAttributeVo storeAttributeVo) {
        //计算分页第一个参数
        Integer start = (storeAttributeVo.getPageIndex()-1)* storeAttributeVo.getPageIndex();
        storeAttributeVo.setStart(start);
        //查询页面显示的数据
        List<StoreAttribute> storeAttributeList = storeAttributeMapper.getStoreLogoByPage(storeAttributeVo);
        //计算总条数
        Integer totalSize = storeAttributeMapper.getTotalSize();
        //计算总页数
        Integer totalPage = (totalSize/ storeAttributeVo.getPageSize() == 0 ? totalSize % storeAttributeVo.getPageSize():totalSize % storeAttributeVo.getPageSize()+1);
        //将数据放到对象中
        PageVo<StoreAttribute> pageVo = new PageVo<>();
        pageVo.setTotalPage(totalPage);
        pageVo.setTotalNumber(totalSize);
        pageVo.setDataList(storeAttributeList);
        return ResultVo.success(pageVo);
    }

    //新增
    @Override
    public ResultVo add(StoreAttributeAddVo storeAttributeAddVo) {
        //判断库区属性的编码是否唯一
        Integer codeCount = storeAttributeMapper.getCountByCode(storeAttributeAddVo.getCode());
        if (codeCount>0){
            //如果编码不唯一,提示错误信息
            return ResultVo.error("库区属性编码重复,请从新输入");
        }
        //判断库区属性的名称是否唯一
        Integer nameCount = storeAttributeMapper.getCountByName(storeAttributeAddVo.getName());
        if (nameCount>0){
            //如果名称不唯一,提示错误信息
            return ResultVo.error("库区属性名称重复,请从新输入");
        }
        storeAttributeMapper.add(storeAttributeAddVo);
        return ResultVo.success("添加成功");
    }

    //修改
    @Override
    public ResultVo update(StoreAttributeUpdateVo storeAttributeUpdateVo) {
        //判断当前数据是否为启用状态
        Boolean status = storeAttributeMapper.checkStatus(storeAttributeUpdateVo.getCode());
        if (status){
            return ResultVo.error("当前数据为启用状态,不允许操作");
        }
        //判断库区属性的名称是否唯一
        Integer nameCount = storeAttributeMapper.getCountByName2(storeAttributeUpdateVo);
        if (nameCount>0){
            //如果名称不唯一,提示错误信息
            return ResultVo.error("库区属性名称重复,请从新输入");
        }
        storeAttributeMapper.update(storeAttributeUpdateVo);
        return ResultVo.success("修改成功");
    }

    @Override
    //修改状态
    public ResultVo updateStatus(StoreAttributeUpdateStatusVo storeAttributeUpdateStatusVo) {
        storeAttributeMapper.updateStatus(storeAttributeUpdateStatusVo);
        return ResultVo.success("状态修改成功");
    }








}
